From: Andrew Cooper Date: Wed, 27 Apr 2016 12:31:05 +0000 (+0100) Subject: tools/blktap2: Fix use of uninitialised variable in _tap_list_join3() X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~1219 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=ca4c1848f128e3aeb8a79945137d6b2bc710ba93;p=xen.git tools/blktap2: Fix use of uninitialised variable in _tap_list_join3() Clang points out: tap-ctl-list.c:457:28: error: variable 'entry' is uninitialized when used here [-Werror,-Wuninitialized] for (; *_entry != NULL; ++entry) { ^~~~~ The content of that loop clearly was meant to iterate over _entry rather than entry, so is fixed to do so. This presumably fixes a memory leak when tapdisks get orphed, as only the first item on the list got freed. There is no use of entry at all. It is referenced in a list_for_each_entry(tl, &tap->list, entry) construct, but this is just a member name, and not a reference to local scope variable of the same name. Signed-off-by: Andrew Cooper Acked-by: Wei Liu Release-acked-by: Wei Liu Reviewed-by: Doug Goldstein --- diff --git a/tools/blktap2/control/tap-ctl-list.c b/tools/blktap2/control/tap-ctl-list.c index c91f6f48d3..f8d49c3342 100644 --- a/tools/blktap2/control/tap-ctl-list.c +++ b/tools/blktap2/control/tap-ctl-list.c @@ -400,7 +400,7 @@ int _tap_list_join3(int n_minors, int *minorv, int n_taps, struct tapdisk *tapv, tap_list_t ***_list) { - tap_list_t **list, **_entry, *entry; + tap_list_t **list, **_entry; int i, _m, err; list = tap_ctl_alloc_list(n_minors + n_taps); @@ -454,7 +454,7 @@ _tap_list_join3(int n_minors, int *minorv, int n_taps, struct tapdisk *tapv, } /* free extraneous list entries */ - for (; *_entry != NULL; ++entry) { + for (; *_entry != NULL; ++_entry) { free_list(*_entry); *_entry = NULL; }